iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
佛心分享-SideProject30

使用unity 及 photon fusion 打造線上RTS遊戲系列 第 7

Day 7 Photon Fusion 2 Host Mode物件生成

  • 分享至 

  • xImage
  •  

物件生成


public void SpawnObject(NetworkPrefabRef prefab, Vector3 position, PlayerRef playerRef = null){

    // 物件生成函式,四個參數分別是網路預製件,位置,旋轉,輸入授權
    var obj = Runner.Spawn(prefab, position, Quaternion.identity, playerRef);
}

在Photon Fusion 2中想要生成網路物件,可以透過Runner.Spawn這個函式生成,但在Host mode時僅有主機端擁有狀態授權能夠生成物件,故需要透過RPC的方式來生成物件。

[Rpc(RpcSources.InputAuthority, RpcTargets.StateAuthority, HostMode = RpcHostMode.SourceIsHostPlayer)]
public void RPC_SendSpawnObject(NetworkPrefabRef prefab, Vector3 position, RpcInfo info = default)
{
    RPC_RelaySpawn(prefab, position, info.Source);
}
[Rpc(RpcSources.StateAuthority, RpcTargets.All, HostMode = RpcHostMode.SourceIsServer)]
public void RPC_RelaySpawn(NetworkPrefabRef prefab, Vector3 position, PlayerRef playerRef)
{
    SpawnObject(prefab, position, playerRef)
}

什麼是RPC?

RPC是"Remote Procedure Call"的縮寫,中文通常翻譯為"遠程過程調用"。在網絡遊戲中,RPC允許你在一台電腦上執行代碼,但實際上這段代碼會在網絡中的其他電腦上運行。
想像你和朋友在玩一個網絡遊戲。當你按下按鈕開門時,你希望其他玩家也能看到門開了。RPC就是實現這種效果的方法之一。

RPC Prpertise

  • RpcSources: 指定誰可以調用這個RPC。比如,InputAuthority表示只有控制這個物體的玩家可以調用。
  • RpcTargets: 指定RPC應該在哪裡執行。比如,All表示在所有連接的客戶端上執行。

上一篇
#Day 6 Photon Fusion 事件處理
下一篇
Day 8 Photon Fusion 2 Host Mode 基本設定
系列文
使用unity 及 photon fusion 打造線上RTS遊戲12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言